<?php

class Recurso extends BaseRecurso
{

  public function __toString()
  {
    return $this->getCedula() ." ". $this->getPrimerNombre() . "  " . $this->getPrimerApellido();
  }
  
   public function getLogins()
   {
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT id, login, primer_nombre, primer_apellido FROM recurso ");
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{		
			$tabla.="<tr><th><input type=\"radio\" name=\"RadioGroup1\" 
			value=".$fila['id']."></th><td>".$fila['login']."</td><td>".$fila['primer_nombre']." ".
			$fila['primer_apellido']."</td></tr>";
		} 	
		return $tabla;
	}
	
   public function getRecursoProyecto($id)
   {
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT R.id as id, R.primer_nombre as primer_nombre, R.primer_apellido
		as primer_apellido FROM recurso R, proyecto_recurso E where R.id=E.recurso_id and 
		E.proyecto_id=?");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{		
			$tabla.="<option value=".$fila['id'].">".$fila['primer_nombre']." ".
			$fila['primer_apellido']."</option>";
		} 	
		return $tabla;
	}
  
    public function getRecursos()
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT id, primer_nombre, primer_apellido FROM recurso ");
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{		
			$tabla.="<option value=\"".$fila['id']."\">".$fila['primer_nombre']." ".$fila[
			'primer_apellido']."</option>";
		} 	
		return $tabla;
	}
  
  	public function getTabla($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT P.id, P.cedula as cedula, P.primer_nombre as nombre,
	    P.primer_apellido as apellido, R.nombre as asignacion, Y.rol_id as idr FROM recurso P, rol R, 	
	    proyecto_recurso Y WHERE  Y.recurso_id=P.id and Y.rol_id=R.id and Y.proyecto_id= ? ");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";			
		while($fila = $stmt->fetch()) 
		{
			$tabla.= "<tr><th><input type=\"radio\" name=\"RadioGroup1\" value=". 
			$fila['id']."><input type=\"hidden\" name=\"Rolh\" value=". $fila['idr']."/></th>";    
 		    $tabla.= "<td  width=\"100\" >". $fila['cedula']."</td><td  width=\"180\" >". $fila[
			'nombre']." ".$fila['apellido']."</td><td>". $fila['asignacion'] . "</td></tr>";
		} 	
		return $tabla;
	}
	 
	public function getTablaSR($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT P.id, P.cedula as cedula, P.primer_nombre as nombre,
	    P.primer_apellido as apellido, R.nombre as asignacion, Y.rol_id as idr FROM recurso P, rol R, 	
	    proyecto_recurso Y WHERE  Y.recurso_id=P.id and Y.rol_id=R.id and Y.proyecto_id= ? ");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";	
		while($fila = $stmt->fetch()) 
		{
			$tabla.= "<tr><td  width=\"100\" >". $fila['cedula']."</td><td  width=\"180\" >". $fila[
			'nombre']." ".$fila['apellido']."</td><td>". $fila['asignacion'] . "</td></tr>";
		} 	
		return $tabla;
	}
	
    public function getRendimientoIndividualExportar($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT P.id as id, X.requerimiento_id as requerimiento_id,  P.nombre as
		proyecto , sum(X.puntos) as puntos FROM proyecto P, (Select A.recurso_id as recurso_id,
		A.proyecto_id as proyecto_id, R.id as requerimiento_id, R.nro_puntos as puntos FROM actividad
		A, requerimiento R WHERE R.id=A.requerimiento_id and A.recurso_id=? group by R.id)X,
		(Select A.requerimiento_id as requerimiento_id, count(A.id) as listas FROM actividad A WHERE
		A.terminada=true group by A.requerimiento_id)A,(Select A.requerimiento_id as requerimiento_id 
		, count(A.id) as todas FROM actividad A group by A.requerimiento_id)B WHERE
		A.requerimiento_id=B.requerimiento_id and A.listas=B.todas and 
		X.requerimiento_id=B.requerimiento_id and X.proyecto_id=P.id group by X.proyecto_id");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		$total=0;
	    $i=0;
		while($fila = $stmt->fetch()) 
		{
			$i=$i+1;
			$stmt1 = $con->prepare("Select X.tiempo as tiempo, R.especificacion as especificacion,
			R.nro_puntos as puntos FROM(Select A.recurso_id as recurso_id ,
			sum(horasr)/56 as tiempo,A.proyecto_id as proyecto_id, R.id as requerimiento_id,
			R.nro_puntos as puntos FROM actividad A, requerimiento R WHERE R.id=A.requerimiento_id and
			A.terminada=true and A.recurso_id=? group by R.id)X,(Select A.requerimiento_id as 
			requerimiento_id, count(A.id) as listas FROM actividad A WHERE A.terminada=true group by
			A.requerimiento_id)A,(Select A.requerimiento_id as requerimiento_id , count(A.id) as todas
			FROM actividad A group by A.requerimiento_id)B,requerimiento R WHERE
			A.requerimiento_id=B.requerimiento_id and A.listas=B.todas and R.id=A.requerimiento_id and
			A.requerimiento_id=X.requerimiento_id and X.proyecto_id =? group by R.id");
			$stmt1->bindValue(1, $id);
			$stmt1->bindValue(2, $fila['id']);
			$stmt1->execute();
			$actividades="<td align=\"left\"><table border=\"1\" frame=\"void\" rules=\"groups\"
			cellpadding=\"2\" border=\"1\"><colgroup align=\"right\" span=\"2\" style=\"width: 2em\" 
			/><thead><tr><td cellpadding=\"2\"><em>Requerimiento</em></td><td><em>Puntos</em></td>
			</tr></thead>";
			$tiempo=0;
			while($fila1 = $stmt1->fetch()) 
			{
			 $actividades.="<tbody><tr><td cellpadding=\"2\">".$fila1['especificacion']."</td><td>".
			 $fila1['puntos']."</td></tr></tbody>";
			 $tiempo=$tiempo+$fila1['tiempo'];
			}
			$actividades.="</table></td>";
			$tiempor=round($tiempo*100)/100;
			$valor=round(($fila['puntos']/$tiempor)*100)/100;
			$tabla.= "<tr><td  align=\"center\" >". $fila['proyecto']."</td>".$actividades."<td  
			align=\"center\" >". $fila['puntos']."</td><td align=\"center\" >".$tiempor."</td></td>
			<td align=\"center\" >".$valor."</td></tr>";
			$total=$total+$valor;
		} 
		if($i>0)
		{
		$totalp=round(($total/$i)*100)/100;
		$tabla.= "<tr><td colspan=\"4\" bgcolor=\"#999999\"><strong>Promedio de la Velocidad</strong>
		</td><td align=\"center\" bgcolor=\"#999999\"><strong>".$totalp."</strong></td></tr>";	
		}		
		return $tabla;
	}
	
	public function getRendimientoIndividual($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT P.id as id, X.requerimiento_id as requerimiento_id,  P.nombre as
		proyecto , sum(X.puntos) as puntos FROM proyecto P, (Select A.recurso_id as recurso_id,
		A.proyecto_id as proyecto_id, R.id as requerimiento_id, R.nro_puntos as puntos FROM actividad
		A, requerimiento R WHERE R.id=A.requerimiento_id and A.recurso_id=? group by R.id)X,
		(Select A.requerimiento_id as requerimiento_id, count(A.id) as listas FROM actividad A WHERE
		A.terminada=true group by A.requerimiento_id)A,(Select A.requerimiento_id as requerimiento_id 
		, count(A.id) as todas FROM actividad A group by A.requerimiento_id)B WHERE
		A.requerimiento_id=B.requerimiento_id and A.listas=B.todas and 
		X.requerimiento_id=B.requerimiento_id and X.proyecto_id=P.id group by X.proyecto_id");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";		
		$total=0;
	    $i=0;
		while($fila = $stmt->fetch()) 
		{
			$i=$i+1;
			$stmt1 = $con->prepare("Select X.tiempo as tiempo, R.especificacion as especificacion,
			R.nro_puntos as puntos FROM(Select A.recurso_id as recurso_id ,
			sum(horasr)/56 as tiempo,A.proyecto_id as proyecto_id, R.id as requerimiento_id,
			R.nro_puntos as puntos FROM actividad A, requerimiento R WHERE R.id=A.requerimiento_id and
			A.terminada=true and A.recurso_id=? group by R.id)X,(Select A.requerimiento_id as 
			requerimiento_id, count(A.id) as listas FROM actividad A WHERE A.terminada=true group by
			A.requerimiento_id)A,(Select A.requerimiento_id as requerimiento_id , count(A.id) as todas
			FROM actividad A group by A.requerimiento_id)B,requerimiento R WHERE
			A.requerimiento_id=B.requerimiento_id and A.listas=B.todas and R.id=A.requerimiento_id and
			A.requerimiento_id=X.requerimiento_id and X.proyecto_id =? group by R.id");
			$stmt1->bindValue(1, $id);
			$stmt1->bindValue(2, $fila['id']);
			$stmt1->execute();
			$actividades="<td align=\"left\"><table border=\"1\" frame=\"void\" rules=\"groups\"
			cellpadding=\"2\" border=\"1\"><colgroup align=\"right\" span=\"2\" style=\"width: 3em\" 
			/><thead><tr><td cellpadding=\"2\"><em>Requerimiento</em></td><td><em>Puntos</em></td>
			</tr></thead>";
			$tiempo=0;
			while($fila1 = $stmt1->fetch()) 
			{
			 $actividades.="<tbody><tr><td cellpadding=\"2\">".$fila1['especificacion']."</td><td>".
			 $fila1['puntos']."</td></tr></tbody>";
			 $tiempo=$tiempo+$fila1['tiempo'];
			}
			$actividades.="</table></td>";
			$tiempor=round($tiempo*100)/100;
			$valor=round(($fila['puntos']/$tiempor)*100)/100;
			$tabla.= "<tr><td align=\"center\" >". $fila['proyecto']."</td>".$actividades."<td 
			align=\"center\" >". $fila['puntos']."</td><td align=\"center\" >".$tiempor."</td></td><td
			align=\"center\" >".$valor."</td></tr>";
			$total=$total+$valor;
		} 
		if($i>0)
		{
		$totalp=round(($total/$i)*100)/100;
		$tabla.= "<tr><th colspan=\"4\"><strong>Promedio de la Velocidad</strong>
		</th><th><strong>".$totalp."</strong></th></tr>";	
		}		
		return $tabla;
	}

	
	public function getNombreCompleto($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT id, primer_nombre, primer_apellido FROM recurso where id=?");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{		
			$tabla.=$fila['primer_nombre']." ".$fila['primer_apellido'];
		} 	
		return $tabla;
	}
	
	public function getRendimientoGrupal()
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT Z.puntos as puntos,P.recurso_id as recurso_id, P.proyecto_id as
		proyecto_id from proyecto_recurso P,(SELECT P.id as id, P.nombre as proyecto ,
		sum(R.nro_puntos) as puntos FROM proyecto P, requerimiento R WHERE P.id=R.proyecto_id group by
		P.id)X ,(Select A.proyecto_id as proyecto_id, sum(A. puntos) as puntos FROM (Select
		A.proyecto_id as proyecto_id, A.requerimiento_id as requerimiento_id, count(A.id) as listas,
		R.nro_puntos as puntos FROM actividad A, requerimiento R WHERE A.terminada=true and
		R.id=A.requerimiento_id group by A.requerimiento_id)A,(Select A.proyecto_id as proyecto_id,
		A.requerimiento_id as requerimiento_id, count(A.id) as todas FROM actividad A group by
		A.requerimiento_id)B WHERE A.requerimiento_id=B.requerimiento_id and A.listas=B.todas group by
		A.proyecto_id) Z WHERE Z.proyecto_id= X.id and X.id=P.proyecto_id order by 
		P.proyecto_id,P.recurso_id");
		$stmt->execute();
		$proyectos_grupos;
		$proyectos;
		$grupo;
		$puntos;
		$puntosa;
		$i=0;
		$j=0;
		$aux='vacio';
		$a=true;
		while($fila = $stmt->fetch()) 
		{
		if ($aux=='vacio') $aux=$fila['proyecto_id'];
			if (!($aux==$fila['proyecto_id']))
				{
				$i=$i+1;
				$aux=$fila['proyecto_id'];
				$j=0;
				unset ( $grupo );
				}
		$grupo[$j]=$fila['recurso_id'];
		$j=$j+1;
		$puntos[$i]=$fila['puntos'];
		$proyectos_grupos[$i]=$grupo;
		$proyectos[$i]=$aux;		
		}		
		///Comprara arreglos
		$tabla="";
		for($k=0;$k<count($proyectos_grupos); $k++)
		{
		$total=$puntos[$k];
		//MOSTRAR
		$tabla.="<tr><td align=\"center\">";
					for($m=0;$m<count($proyectos_grupos[$k]); $m++)
					{
					$aux=$proyectos_grupos[$k];
					$tabla.=$this->getNombreCompleto($aux[$m]);
					$tabla.="<br />";
					}
		$tabla.="</td>";	
		       if ($k<(count($proyectos_grupos)-1))	
			   {				
					for($z=$k+1;$z<count($proyectos_grupos); $z++)
					{
						if($this->getComparar($proyectos_grupos[$k],$proyectos_grupos[$z]))
						{
						$total=$total+$puntos[$z];
						array_splice($proyectos_grupos,$z,1); 
						array_splice($proyectos,$z,1); 
						array_splice($puntos,$z,1); 
						}
					}
				}					
		$tabla.="<td align=\"center\">".$total."</td></tr>";												
		} 		
		return $tabla;
	}
	
	public function getComparar($arreglo1, $arreglo2)
	{
	  $i=0;
			if (count($arreglo1)==count($arreglo2))
			{
			   for($x=0;$x<count($arreglo1);$x++)
			   {
			   	 if ($arreglo1[$x]=$arreglo2[$x]) {$i=$i+1;}			   			
			   }
			   if(count($arreglo1)==$i) return true;
			   else return false;
			}
			else
			{
			return false;
			}
		
	}
	
	public function getMisProyectos($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("SELECT P.id as id, P.nombre as proyecto, P.fecha_ini as fecha_ini FROM 	
		proyecto P, (Select A.recurso_id as recurso_id, A.proyecto_id as proyecto_id FROM 
		proyecto_recurso A WHERE A.recurso_id=? group by A.recurso_id)X 
		WHERE X.proyecto_id=P.id group by X.proyecto_id");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{
			$tabla.= "<tr><td>". $fila['proyecto']."</td><td>". $fila['fecha_ini']."</td>
			</tr>";			
		} 					
		return $tabla;
	}	
	
	public function getMisActividades($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("Select P.nombre as proyecto, R.especificacion as especificacion, 
		A.descripcion as descripcion, A.tiempo_ini_estimado as tiempo_ini_estimado,	
		A.tiempo_fin_estimado as tiempo_fin_estimado,A.tiempo_ini_real as tiempo_ini_real,				
		A.tiempo_fin_real as tiempo_fin_real FROM actividad A, requerimiento R, proyecto P WHERE  
		P.id=A.proyecto_id and R.id=A.requerimiento_id and A.tiempo_fin_real IS NULL and 
		A.recurso_id=?");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{
			$tabla.= "<tr><td bgcolor=\"#B8D8C4\" width=\"220\">".$fila['proyecto']."</td><td  
			bgcolor=\"#B8D8C4\" width=\"220\">". $fila['especificacion']."</td><td bgcolor=\"#B8D8C4\"
			 width=\"320\">".$fila['descripcion']."</td><td bgcolor=\"#B8D8C4\" >". $fila[
			 'tiempo_ini_estimado']."</td><td  bgcolor=\"#B8D8C4\" >". $fila['tiempo_fin_estimado']."
			</td><td  bgcolor=\"#B8D8C4\" >". $fila['tiempo_ini_real']."</td><td  bgcolor=\"#B8D8C4\"
			>". $fila['tiempo_fin_real']."</td></tr>";			
		} 					
		return $tabla;
	}
	
	public function getMisActividadesR($id)
	{
		$con = Propel::getConnection();
		$stmt = $con->prepare("Select P.nombre as proyecto, R.especificacion as especificacion, 
		A.descripcion as descripcion, A.tiempo_ini_estimado as tiempo_ini_estimado,	
		A.tiempo_fin_estimado as tiempo_fin_estimado,A.tiempo_ini_real as tiempo_ini_real,				
		A.tiempo_fin_real as tiempo_fin_real FROM actividad A, requerimiento R, proyecto P WHERE  
		P.id=A.proyecto_id and R.id=A.requerimiento_id and A.tiempo_fin_real IS NULL and 
		A.recurso_id=?");
		$stmt->bindValue(1, $id);
		$stmt->execute();
		$tabla="";
		while($fila = $stmt->fetch()) 
		{
			$tabla.= "<tr><td>".$fila['descripcion']."</td><td>". $fila[
			'especificacion']."</td><td>".$fila['proyecto']."</td><td>". $fila[
			 'tiempo_ini_estimado']."</td><td>". $fila['tiempo_fin_estimado']."
			</td><td>". $fila['tiempo_ini_real']."</td><td>". $fila['tiempo_fin_real']."</td></tr>";			
		} 					
		return $tabla;
	}
	
	public function UpdateLogin($id)
	{
	    $con = Propel::getConnection();
	    $stmt = $con->prepare("UPDATE recurso SET login=?, password=SHA1(?) WHERE id=?");
	    $stmt->bindValue(1, $this->getLogin());
		$stmt->bindValue(2, $this->getPassword());
		$stmt->bindValue(3, $id);
	    $stmt->execute();		
	}
	
	public function Existe()
	{
	    $con = Propel::getConnection();
	    $stmt = $con->prepare("select id FROM recurso WHERE login=? and password=SHA1(?)");
	    $stmt->bindValue(1, $this->getLogin());
		$stmt->bindValue(2, $this->getPassword());
	    $stmt->execute();
		$i=-1;
		while($fila = $stmt->fetch()) 
		{
		$i=$fila['id'];
		}
		return $i;		
	}
	
	public function ExisteLogin($login,$id)
	{
	    $con = Propel::getConnection();
	    $stmt = $con->prepare("select id FROM recurso WHERE login=?");
	    $stmt->bindValue(1, $login);
	    $stmt->execute();
		$i=0;
		while($fila = $stmt->fetch()) 
		{
			$i=$i+1;
			if ($id==$fila['id']) $i=$i-1;
		}
		return $i;		
	}
	
	
}
